package org.jeecgframework.core.util;

 

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.List;

import java.util.Map;

 

/**

 * http 工具类

 */

public class HttpUtil {

 

    public static String post(String requestUrl, String accessToken, String params)

            throws Exception {

        String contentType = "application/x-www-form-urlencoded";

        return HttpUtil.post(requestUrl, accessToken, contentType, params);

    }

 

    public static String post(String requestUrl, String accessToken, String contentType, String params)

            throws Exception {

        String encoding = "UTF-8";

        if (requestUrl.contains("nlp")) {

            encoding = "GBK";

        }

        return HttpUtil.post(requestUrl, accessToken, contentType, params, encoding);

    }

 

    public static String post(String requestUrl, String accessToken, String contentType, String params, String encoding)

            throws Exception {

        String url = requestUrl + "?access_token=" + accessToken;

        return HttpUtil.postGeneralUrl(url, contentType, params, encoding);

    }

 

    public static String postGeneralUrl(String generalUrl, String contentType, String params, String encoding)

            throws Exception {

        URL url = new URL(generalUrl);

        // 打开和URL之间的连接

        HttpURLConnection connection = (HttpURLConnection) url.openConnection();

        connection.setRequestMethod("POST");

        // 设置通用的请求属性

        connection.setRequestProperty("Content-Type", contentType);

        connection.setRequestProperty("Connection", "Keep-Alive");

        connection.setUseCaches(false);

        connection.setDoOutput(true);

        connection.setDoInput(true);

 

        // 得到请求的输出流对象

        DataOutputStream out = new DataOutputStream(connection.getOutputStream());

        out.write(params.getBytes(encoding));

        out.flush();

        out.close();

 

        // 建立实际的连接

        connection.connect();

        // 获取所有响应头字段

        Map<String, List<String>> headers = connection.getHeaderFields();

        // 遍历所有的响应头字段

        for (String key : headers.keySet()) {

            System.err.println(key + "--->" + headers.get(key));

        }

        // 定义 BufferedReader输入流来读取URL的响应

        BufferedReader in = null;

        in = new BufferedReader(

                new InputStreamReader(connection.getInputStream(), encoding));

        String result = "";

        String getLine;

        while ((getLine = in.readLine()) != null) {

            result += getLine;

        }

        in.close();

        System.err.println("result:" + result);

        return result;

    }

}
